/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ar.com.s21.poo.controller;

import ar.com.s21.poo.dao.VentaDAO;
import ar.com.s21.poo.model.DetalleVenta;
import ar.com.s21.poo.model.TipoPago;
import ar.com.s21.poo.model.Usuario;
import ar.com.s21.poo.model.Venta;
import ar.com.s21.poo.util.UtilityClass;
import java.sql.Date;
import java.sql.SQLException;
import java.util.List;

/**
 *
 * @author Other
 */
public class VentaControlador {
    
    
    
    
    
    private AplicacionControlador aplicacionControlador;
    private UsuarioControlador usuarioControlador;
    private TipoPagoControlador tipoPagoControlador;
    private VentaDAO ventaDAO;
    
    /**
     *
     */
    public VentaControlador(){
        usuarioControlador = new UsuarioControlador();
        tipoPagoControlador = new TipoPagoControlador();
        aplicacionControlador = new AplicacionControlador();
        ventaDAO = new VentaDAO();
    }
    
    

    /**
     *
     * @param fechaVenta
     * @param nroFactura
     * @param vendedor
     * @param cliente
     * @param total
     * @param listaDetalleVenta
     * @param tipoPago
     * @return
     * @throws SQLException
     */
    public Venta generarFactura(String fechaVenta, String nroFactura, String vendedor, String cliente, double total, List<DetalleVenta> listaDetalleVenta, String tipoPago) throws SQLException {
        
        
        
        Date fVenta = UtilityClass.getDateFromString(fechaVenta);
        Usuario c = usuarioControlador.obtenerClientePorNombreYApellido(cliente.toLowerCase());
        Usuario v = usuarioControlador.obtenerVendedorPorNombreYApellido(vendedor);
        TipoPago tp = tipoPagoControlador.obtenerTipoPagoPorDescripcion(tipoPago);
        
        Venta vta = new Venta();
        vta.setCliente(c);
        vta.setDetalleVenta(listaDetalleVenta);
        vta.setFechaVenta(fVenta);
        vta.setMontoTotal(total);
        vta.setNroFactura(Integer.valueOf(nroFactura));
        vta.setTipoPago(tp);
        vta.setVendedor(v);
        
        return vta;
//        Usuario vendedor 
    }

    /**
     *
     * @param venta
     * @throws SQLException
     */
    public void guardarVenta(Venta venta) throws SQLException {
        
        ventaDAO.guardarVenta(venta);
        
    }
    
    
   
    
}
